def smallestRangeII(nums, k):
    # 对数组进行排序
    nums.sort()

    # 初始的最大值和最小值
    n = len(nums)
    min_val = nums[0]
    max_val = nums[-1]

    # 初始的分数
    result = max_val - min_val

    # 遍历数组，考虑将数组分成两部分
    for i in range(n - 1):
        # 前半部分的元素减去 k，后半部分的元素加上 k
        high = max(nums[i] + k, max_val - k)
        low = min(min_val + k, nums[i + 1] - k)

        # 更新最小的分数
        result = min(result, high - low)

    return result


# 测试用例
print(smallestRangeII([1], 0))  # 输出：0
print(smallestRangeII([0, 10], 2))  # 输出：6
print(smallestRangeII([1, 3, 6], 3))  # 输出：3
